//
//  DMComplianceManager.h
//  DualMediationSDK
//
//  合规管理器 - 重构版本
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

// 前向声明
@class DMUserConsent;
@class DMComplianceStatus;
@protocol DMAdDelegate;

/**
 * DM合规管理器 - 简化版
 * 
 * 核心职责：
 * 1. 使用UserMessagingPlatform框架处理GDPR/UMP合规
 * 2. 处理ATT（App Tracking Transparency）授权
 * 3. 统一的合规初始化接口
 * 4. 合规状态持久化存储
 * 5. 详细的delegate回调和日志输出
 * 
 * 特点：
 * - 只提供一个对外接口方法
 * - 自动处理所有合规要求
 * - 基于UserMessagingPlatform框架
 * - 支持调试模式
 * - 完整的delegate回调机制
 */
@interface DMComplianceManager : NSObject

#pragma mark - Singleton

/**
 * 获取单例实例
 */
+ (instancetype)sharedManager;

#pragma mark - Delegate

/**
 * 合规事件代理
 */
@property (nonatomic, assign, nullable) id<DMAdDelegate> delegate;

#pragma mark - Core API

/**
 * 初始化合规管理并请求所有必要权限
 * 
 * 这是唯一的对外接口方法，会自动处理：
 * 1. UMP (User Messaging Platform) 同意表单
 * 2. ATT (App Tracking Transparency) 权限请求
 * 3. CCPA 合规处理
 * 4. 合规状态的持久化存储
 * 5. 详细的delegate回调
 * 
 * @param completion 完成回调，success表示是否成功初始化，error包含错误信息
 * 
 * @note 此方法是线程安全的，可以多次调用（如已初始化则直接回调成功）
 * @note 在调试模式下会使用测试设备ID和欧盟地理位置进行测试
 * @note 所有合规步骤都会通过delegate进行详细回调
 */
- (void)initializeComplianceWithCompletion:(void(^)(BOOL success, NSError * _Nullable error))completion;

#pragma mark - Status Properties

/**
 * 检查是否已初始化
 */
@property (nonatomic, readonly) BOOL isInitialized;

/**
 * 获取当前用户同意信息
 * @return 用户同意信息的副本
 */
- (DMUserConsent *)getCurrentUserConsent;

/**
 * 获取当前合规状态
 * @return 合规状态对象
 */
- (DMComplianceStatus *)getCurrentComplianceStatus;

@end

NS_ASSUME_NONNULL_END